23

» WarCraft 3 / Респаун Крипов

Похожие вопросы:

ответ
Вот обновленная версия на структурах, я её вроде выкладывал...
либо используйте CreateCreepOfType для создания крипов, так будет респаунить тока тех крипов которых вы создали этой функцией...
ответ
Сергей45, дело в том, что когда ты ставишь юнита на карте, то при сохранении в скрипт карты добавляется кусок, который на старте игры именно в этих координатах создаст именно этого юнита, с указанным количеством здоровья, маны, уровнем, и предметами (если есть инвентарь).
Для тебя это просто "нажал, поставил, в игре он есть".
На деле же - он создаётся отдельным куском скрипта (и это нормально).
Когда ты открываешь на юните (в редакторе) вкладку с выпадающими предметами, то там можно указать выпадающие предметы и их шанс при этом. Что происходит на самом деле? - в скрипт игры вшивается кусок, который регистрирует событие смерти этого юнита (а так же событие получения над ним контроля, если его захватят то предмет тоже выпадает). Умирая этот юнит пройдёт несколько простых проверок, и дальше под ним будут созданы предметы (из списка).
Список формируется в момент смерти юнита!
Когда юнит умирает, берётся глобальный список (общий), и в нём производится очистка. После этого в него добавляются предметы и числа (т.е. шанс). После этого особая хитрая функция выбрасывает случайное число и получает по нему один из предметов (записанных ранее в список).
Готово. Именно такова суть работы базового дропа предметов.
Дальше тебе надо используя событие смерти юнита, сделать проверку на его тип, и создать нужный предмет под ним (но это будет работать в 100% случаев). Если ты хочешь добавить к этому шанс, то можно просто дополнительно прикрутить выбрасывание случайного числа (например от 1 до 100), и если оно меньше некоего другого числа (например 40), то только тогда создаёшь предмет (это будет 40%-й шанс на дроп).
А вот если тебе надо сделать хитрее, например 100% что предмет выпадет, и из них 20% что это будет кольцо на +3, и остальные 80% что это будет кольцо на +2, тогда тебе придётся добавить ещё несколько проверок, и их число будет рости от количества этих вариантов дропа.
Если ты делаешь всё на 1.26 и у тебя есть JNGP, то ты можешь сразу использовать добавленные в GUI функции для работы со списком:
call RandomDistReset() очистка списка
call RandomDistAddItem(ID,X) добавление предмета ID с шансом X (число от 0 до 100)
set itemID = RandomDistChoose() получение случайного ID из списка, за счёт шанса
Первые два - на самом дне списка действий категории "Предмет"
Третий - указывается вместо типа предмета, при его создании (тоже есть в списке)
Если у тебя нет возможность использовать JNGP (например из-за версии патча), тогда ты можешь просто на прямую обращаться к этим функциям (если, конечно, они не изменились). Но для этого тебе придётся чуть-чуть обрести понимания в том как работает JassCS).

23

» WarCraft 3 / wurst.startmap' not found как исправить?

Похожие вопросы:

ответ
Такое может произойти если функция не объявлена публичной
public function StatsSyncAll(unit owner)
    // Ра-та-та-та-та
По умолчанию, объявления внутри пакета приватные.
P.S. в Wurst лучше придерживаться стиля Wurst. То бишь, имена функций и переменных следует начинать с маленькой буквы
public function  statsSyncAll(unit owner)
ответ
Даже если в редакторе создать молоток без бафов, и использовать его в AbilityDefinition('новый молоток', 'молоток из редактора'), то при очистке бафов, стан всё равно есть, но без эффекта.
К сожалению да, бафф это по большей части просто визуал в статусе героя. На механику мало влияет.
Не получается через UnitDefinition() сделать копию Сильваны 'Hvwd'(Хуманы, компания),
Вроде никаких проблем
Код
package Hello
import NoWurst
import UnitObjEditing
import Unit

@compiletime function createSilvanas()
	new UnitDefinition('NSlv', 'Hvwd')
	..setName("Двурукий Стреломёт")

init
	createUnit(Player(0), 'NSlv', vec2(0, 0), angle(0))
Результат
Разница между UnitDefinition и HeroDefinition в отсутствии в первой полей из второго.
Проверь, может в файле wurst_run.args, что в папке проекта, отсутствуют строки
-runcompiletimefunctions
-injectobjects
Или забыл аннотацию compiletime перед объявлением функции, в которой генерируется юнит.
ответ
Решил проблему, кириллица работает только в русской версии wc3. В любой другой, русский текст отображаться не будет совсем.
Это не решение)
Создай папку Fonts в папке с игрой и кинь туда этот шрифт.
ответ
Если у тебя есть необходимость в сотни пакетов, ты что-то явно делаешь не так.
Либо это будет вызывать ошибки, по типу всяких бесконечных компиляций и т.д.
Нет. Но если такая ошибка возникнет, это баг компилятора (если не твоя ошибка), о котором надо сообщить разработчику.
Ты можешь только упереться в ОП лимит, поскольку выполнение блоков init каждого пакета выполняется в пределах одной функции вызовом TriggerEvaluate. В остальном без ограничений.
ответ
Никак. Дизайн языка такой возможности не предусматривает.

23

» WarCraft 3 / Получить уровень бафа ауры на юните

Похожие вопросы:

ответ
У бафа нет уровня, его невозможно отследить. Но можно добавлять юниту невидимую способность со множеством уровней (например, на основе стандартной "Ауры торнадо" или "Сферы"). Эта способность, в свою очередь, будет накладывать нужный баф. А как отловить уровень способности уже сказали:
native GetUnitAbilityLevel takes unit whichUnit, integer abilcode returns integer
+
No, level of Buff!
buff == ability
function UnitHasBuffBJ takes unit whichUnit, integer buffcode returns boolean
    return (GetUnitAbilityLevel(whichUnit, buffcode) > 0)
endfunction

23

» WarCraft 3 / Складывание предметов

Похожие вопросы:

ответ
  1. тогда сделай при найме героя, чтобы все остальные блокировались для данного игрока.
  2. попробуй тогда сделать условие number of units owned by player matching the codition (matching unit is alive = true) равно 0
ответ
отлавливаем применение предмета
если цель предмета совпадает с применяемым предметом то уменьшаем количество зарядов в 2 раза и даём предмет с оставшимися зарядами
ответ
Steal nerves:
Вы так не понятно разъясняете свои мысли. Сделать можно по-разному.
ограничить складывание зарядов от двух итемов в один слот. Пример максимум зарядов до 5.
зелье 1 заряд + зелье 1 заряд = зелье 2 заряда
если у зелья больше 5 зарядов, не складывать. Будет складываться в новый слот инвентаря. Есть и этот слот забьет, то складывать в новый.
> ??Событие:??
> -Боевая единица - A unit Получает предмет 
> ??Условие:??
> -(Item-type of (Item being manipulated))) == "Предмет1")
> ??Действие:??
> -Set "переменная Целочисленная 1" = 0 //кол-во итемов одного типа в инвентаре
> -Set "переменная Целочисленная 2" = 0 //кол-во общих зарядов
> -Set "переменная Целочисленная 3" = 0 //номер массива
> -For each (Integer A) from 1 to 6, fo (Actions)
> --Цикл - действия:
> ---If\Then\Else, multiple function
> ----Если - условие:
> -----(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет1")
> -----(Charges remaining in (Item carried by(Hero manipulating item) in slot (Integer A))) меньше 5)
> ----То - Действие:
> -----Set "переменная Целочисленная 1" = (Set "переменная Целочисленная 1" + 1)
> -----Set "переменная Целочисленная 2" = (Set "переменная Целочисленная 2" + Charges remaining in(Item carried by(Hero manipulating item) in slot (Integer A)))
> -----Set "переменная Целочисленная 3" = Integer A
> - If\Then\Else, multiple function
> -- Если - условие:
> --- ("переменная Целочисленная 1" больше 1)
> --То - Действие:
> --- If\Then\Else, multiple function
> ---- Если - условие:
> ----- ("переменная Целочисленная 2" больше 5)
> ----То - Действие:
> ------ Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to (5) //первому перекидываем 5 зарядов
> ------ Предмет - Set Charges remaining in (Item being manipulated) to ("переменная Целочисленная 2"- 5) //оставшиеся заряды перебрасываем второму "подобранному" итему
> ---- Иначе - Действие:
> -----Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to ("переменная Целочисленная 2") //все заряды отдаем первому
> -----Предмет - Remove (Item being manipulated) //а подобранный итем удаляем, словно его и не было
хочу сделать чтобы заряды увеличивались от другого предмета
Два предмета складываются в один. Например "шар 1" и "шар 2" = "шар 1" с 2 зарядами.
Вам достаточно добавить блок-схему условие-1 ИЛИ условие-2
можешь подобрать гриб-1, так можно подобрать гриб-2, главное чтобы один из них сработал.
> ??Событие:??
> -Боевая единица - A unit Получает предмет 
> ??Условие:??
> -(Multiple Conditions Or - Any (Conditions) are true //позволяет вставить проверку нескольких условии. Или первый тип или второй тип. 
> --(Item-type of (Item being manipulated))) == "Предмет1")
> --(Item-type of (Item being manipulated))) == "Предмет2")
> ??Действие:??
> -Set "переменная Целочисленная 1" = 0 //кол-во итемов одного типа в инвентаре
> -Set "переменная Целочисленная 2" = 0 //кол-во общих зарядов
> -Set "переменная Целочисленная 3" = 0 //номер массива
> -For each (Integer A) from 1 to 6, fo (Actions)
> --Цикл - действия:
> ---If\Then\Else, multiple function
> ----Если - условие:
> -----(Multiple Conditions Or - Any (Conditions) are true
> ------(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет1")
> ------(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет2")
> -----(Charges remaining in (Item carried by(Hero manipulating item) in slot (Integer A))) меньше 5)
> ----То - Действие:
> -----Set "переменная Целочисленная 1" = (Set "переменная Целочисленная 1" + 1)
> -----Set "переменная Целочисленная 2" = (Set "переменная Целочисленная 2" + Charges remaining in(Item carried by(Hero manipulating item) in slot (Integer A)))
> -----Set "переменная Целочисленная 3" = Integer A
> - If\Then\Else, multiple function
> -- Если - условие:
> --- ("переменная Целочисленная 1" больше 1)
> --То - Действие:
> --- If\Then\Else, multiple function
> ---- Если - условие:
> ----- ("переменная Целочисленная 2" больше 5)
> ----То - Действие:
> ------ Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to (5) //первому перекидываем 5 зарядов
> ------ Предмет - Set Charges remaining in (Item being manipulated) to ("переменная Целочисленная 2"- 5) //оставшиеся заряды перебрасываем второму "подобранному" итему
> ---- Иначе - Действие:
> -----Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to ("переменная Целочисленная 2") //все заряды отдаем первому
> -----Предмет - Remove (Item being manipulated) //а подобранный итем удаляем, словно его и не было

23

» WarCraft 3 / Как сделать юнита которого нельзя выбрать?

Похожие вопросы:

ответ
Грубый пример:
Событие - постройка завершена
Действие: Если тип юнита (построенное здание) = стена,
то установить переменую-точку = позиция (построенного здания),
удалить (построенное здание)
создать декорацию типа "Стена-декорация" в точке-переменной
удалить точку

Пишу с работы, редактора под рукой нет. Прошу за ошибки и неточности простить))
ответ
~8gabriel8:
Каждый вопрос заслуживает отдельного обсуждения, а на все стало лень ответ печатать, когда начал.
Печатать реально долго, легче было реализовать примеры в карте:
Кроме последнего пункта, его нужно персонально рассматривать, так как игра не подразумевает использование для юнита двух списков. Например, можно наполнить список построек у юнита всеми зданиями, часть из которых блокировать при открытии одного списка и разблокировать при открытии второго, но это подходит, когда один рабочий. Можно сделать второй список из книги заклинаний, куда добавлены способности на основе игрушечных строений, чтобы было видно карту пути и всё такое, но там для них используется один приказ, то есть всегда одинаковое здание будет при нажатии на любую способность, а ещё нет стоимости золота и дерева, что тоже придётся как-то ваять триггерно. Можно перевоплощать юнита при смене списка в другого, но там тоже сложности, не помню точно какие, вроде бы связаны с расой, так как все строят по-разному.

С точкой сбора всё просто. Способность у игрока не заблокировать, потому нужно забрать её у всех зданий, которые есть на карте, либо будут построены.

Группа из максимум 9 юнитов работает немножко коряво, ранее мы с PT153 находили какой-то вариант, чтобы работало быстро, но лень пользоваться поиском. Вроде каждую 0.01 секунду проверялось количество выбранных юнитов, лишние удалялись из выбора.

Чтобы не было очереди, пришёл в голову лишь вариант с апгрейдом здания. Но у меня реализован просто пример для одного конкретного здания, а для нескольких абстрактных зданий нужно делать текстовым триггером, который будет для каждого здания запускать локальный таймер на нужное время и добавлять анимационный текстаг work. По отмене апгрейда, либо истечению таймера анимационный тег удаляется и создаётся воин, к которому привязывается соответствующий звук. Но есть и другие варианты, типа создавать внутри здания другое, которое реально будет производить юнитов, когда заказал апгрейд, там иная реализация. И не упомянул про затрачиваемые ресурсы. Потребуется забирать/возвращать часть ресурсов при отмене апгрейда.

На примере триггеров и фиолетовых строк в редакторе объектов смотри, как сделано улучшение Бугая в Дренорского бугая.

Конечно, мог бы сделать MUI триггер на GUI для отсутствия очереди, но это было бы громоздко и в техническом смысле уродливо. производящие здания заносились бы в массив, для которого будет массив таймеров, которые будут заноситься в виде событий на истечение таймера в другой триггер, а точнее будет несколько массивов таймеров, по максимальному числу тренируемых юнитов в любом производящем здании.

Нашёл твои вопросы:
В них бы и спрашивал, что непонятно. А то тебе отвечают, а ты игнорируешь, словно очень умный.
Тебе даже вариант без триггеров для четвёртого пункта сделали: xgm.guru/p/wc3/230191/comments?postid=426457#comment5

23

» WarCraft 3 / Как добавить нового героя в Dota 6.83c

Похожие вопросы:

ответ
Да я имел ввиду доп кампании сделанные по мотивам WC1-2 ) жаль конечно что 1 нету "я б сыграл" как говорится) , не могли бы вы пожалуйста скинуть ссылку на ToD? p.s. "За темным порталом" для WC3 очень понравилось прям как официальная ! успехов вам )
ToD в данный момент созданется. ВОТ ссылка.
ответ
nvc123, не понимаю сути претензий. Да, вопрос нубский (для тебя). Но тем не менее твой ответ — бессодержательный.
ответ
Это баг явно. Исправим в ближайшем патче.

23

» WarCraft 3 / Открыть карту

Похожие вопросы:

ответ
Пишет ошибку и закрывается весь редактор
Таблетку установи, у тебя редактор лицензия.
Если у тебя седьмая
Уже много лет полёт нормальный, мало какая из игр вылетает, даже неверхуд работал, а вар3 вообще летает(всм. хорошо работает).
а у тебя вылетает
у тебя скорее всего стоит русификатор триггеров
У меня стоит на одном из редакторов, не вылетает.
ответ
Способ есть.
Но для этого нужен Warcraft 3 и редактор.
Итого:
  • открываешь редактор,
  • открываешь в нем карту
  • клацаем F9 или просто Проверку карты (там иконка самая последняя в строчке, красная галочка)
  • Profit...
Внимание! Не все карты так можно открыть, некоторые защищенные и открытию в редакторе не подлежат, а если их восстановить, то они не всегда работоспособны.
ответ
ты бы названий таких не делал, а то модератор впаяет условку
для открытия обычных карт понадобится стандартный World Editor, идущий в комплекте с игрой
карты кампании нужно искать в архивах *.mpq, которые находятся в директории игры, в одной папке с приложением war3.exe, и для их открытия понадобятся программы наподобие Win mpq или War3ModelEditor со встроенным Mpq Browser
ответ
Можно, War#mapResorer в помощь, вот ссылочка
А что именно интересует, я кое какие скиллы выкладывал, у фрога там черт ногу сломит, какие то недогуи, всякие старые скиллы которые не удалены, ужос, карта открывается в редакторе по 5 мин.
ответ
Trickster, ну так будет 100р?
В карте испоганен заголовок и хешьтаблица и удалены данные об обьектах, поэтому она не открывается ничем кроме зезулы, но зезула не дает возможность редактировать файлы. Ну собственно я это дело снял, могу восстановить открываемость в редакторе..

23

» WarCraft 3 / Перенос Заданий

Похожие вопросы:

ответ
Ты не представляешь, сколько раз он был задан. Я уверен, ты сам справишься с поисками.

23

» WarCraft 3 / MPQ Master как использовать?

Похожие вопросы:

ответ
Защитить mpq (а карта это тот-же mpq с минимумом отличий) так чтобы его не мог понять никто можно, беда в том, что тогда его не поймет и сам варкрафт. Большинство простых mpq редакторов испоьлзуют ту-же библиотеку для работы с MPQ что и сам варкрафт, что это значит, думаю, догадаться не сложно.
ответ
в warcraft 3 model editor сделайте путь к текстуре нормальным
ответ
MrSlendyBoy, почему-то я уверен, что он здесь на xgm есть, и, даже если там версия новее моего, со своей задачей он справится. Но если ты настаиваешь
ответ
Всё хорошо, не обращайте внимания, дорогие друзья :)
ответ
~8gabriel8:
В целом ты прав, что текстура не должна много весить, но это необязательно. К тому же конкретно трудно выбрать лучший вариант, может быть сильное сжатие больше напрягает процессор, а потеря качества будет заметна в игре. Но определённо любая текстура в игре не должна быть размером больше 512х512, большего размера будут лишь терять в качестве при отображении, при этом для моделей оптимальным будет размер 256х256, так как 512х512 используется в основном для интерфейса и загрузочных экранов, то есть при максимально необходимой детализации. Размеры текстуры должны быть степенью двойки: 512\256\128\64\32\16\8\4\2, чтобы игра не вылетала, если настройки графики не максимальные, а такое бывает при установке игры по умолчанию, либо после переустановки винды. При сохранении в BLP Laboratory нужно выбирать blp1, так как blp2 вроде предназначен для WoW и может не отображаться в варике, при этом опыт привёл меня к заключению, что лучше сохранять текстуры с качеством 75%, а не 80%, так как это заметно делает размер меньше, но почти никогда не заметить потери качества. Но это не оптимальный вариант, однажды встречал текстуру отличного качества и меньшего размера, которая занимала больше места и явно теряло качество, когда сохранял её со своими параметрами, не смог понять, как это сделали.

23

» WarCraft 3 / Карта не открывается

Похожие вопросы:

ответ
Darknessay, у меня открывает все.
ответ
Artyom18:
Pro100Gaus:
Скинь модель в лс, гляну у себя и сразу же отвечу
я ссылку на модель прикрепил в вопросе
В самой модели путь к текстуре немног в шифре так скажем.
ответ
Нашёл решение для тебя.
Пол-ночи провозился, но нашёл. почему-то это стало делом чести - открыть сию карту в редакторе

В общем, берёшь архив из аттача и тупо суёшь папку UI в корень варкрафта. После этого карта будет открываться любым вариантом редактора - как JNGP (любым), так и (даже!) стандартным.
Важно: локальные файлы должны быть разрешены.

Только там такой срач и дичь, что лучше реально своими руками с нуля писать...
ответ
карта "защищена"
простыми способами нельзя переводить и вообще в редакторе открывать, в теории можно в редакторе открыть, но нужен полный листфайл, который надо часами/днями восстанавливать специальной утилитой (а судя по тому что там сотни неизвестных файлов, на это уйдет очень много времени)

Ну и конечно есть ещё вариант - это редактирование scripts\war3map.j и war3map.wts
Первый это скрипт карты, через поиск " можно найти все строки
Второй это хранилище строк
НО
Ещё придется редактировать объектные файлы: w3a, w3u, w3t и т.д., полный список есть в статьях по форматам данных
А если в редакторе карту не открыть без последствий - то придется пересаживать эти объектные файлы в другую карту (вместе с war3map.wts, т.к в объектных файлах могут ссылки на строки), там всё перевести и перекинуть обратно в исходник

23

» WarCraft 3 / World Editor Reforged

Похожие вопросы:

ответ
8gabriel8, ни разу не сталкивался с вылетами редактора при длительной работе. Как я считаю, Reforged переписал пути к WC3 в регистре, из-за чего старый редактор перестал работать, но это лишь догадка.

23

» Администрация XGM / Почему я могу редактировать чужой комментарий?

Похожие вопросы:

ответ
Там ведь все написано:
Имя для ссылки:
может содержать только маленькие латинские буквы, цифры и символ "-"
ответ
Удалены за клоноразведение
ответ
Варианта 2:
  • прожег опыт в оффтопке
  • комментарии удалили, за что опыт и отнялся
ответ
тебе уже ответили в твоём задании
ответ
Проект 3-го уровня не гарантия попадания на главную страницу. Если пост не попал - значит контент менеджер не посчитал его содержательным.
Селяви.

23

» WarCraft 3 / вылетает карта кампании

Похожие вопросы:

ответ
десинк вероятнее всего
нужен дебаг и реплей
а вообще берёшь прогу для записи лога и смотришь с ней реплей
так узнаёшь где вылет
ответ
Halian Izverg:
Может, все дело в переменных? Попробуй в настройках поставить галочку копировать переменные вместе с триггерами или, если не сработает для твоего глючного редактора, попробуй скопировать переменные вручную перед триггерами.
ответ
Лорд13:
Попробуйте перезагрузить компьютер, при загрузке компьютера нажать F8, чтобы вызвать меню выбора режимов загрузки ОС и выбрать "Загрузка последней удачной конфигурации (с работоспособными параметрами)". У меня сегодня тоже редактор стал вылетать при сохранении нестандартных объектов. Помогла перезагрузка с "загрузкой последней удачной конфигурации (с работоспособными параметрами)".
Потыкав разные кнопки во время F8 и ничего не нашёл. Там можно выбрать два пункта, которые просто загружают комп. К слову, windows 10
Да ладна, всё забейте. Как всегда, всё решилось само собой и методом тыка
Всех благодарю
ответ
XGM Bot:
Похожие вопросы:

ответ
Бэкапы надо было делать, мсье. Перед внесением каких-либо серьезных изменений.
ответ
Проблема решена.
ответ
Вообщем перенастроил Jass New Gen Pack карта как то по другому сохранилась с проверками и всё наладилось)


23

» WarCraft 3 / Вопрос по загрузочному экрану

Похожие вопросы:

ответ
Вообще-то и Texture manager и Sequence manager находятся в War3Modeleditor. "Windows" это не название ОС, это переводится как "окна".

23

» WarCraft 3 / Миникарта

Похожие вопросы:

ответ
Ладно, поставил разрешение в Варке на максимум, более или менее нормальный масштаб миникарт получается, всем спасибо за попытки помочь.
ответ
Вряд ли дело в ваших текстурах, скорее всего такова механика отображения миникарты. Но есть как минимум два способа заменить миникарту заранее заготовленным изображением: импорт файла war3mapMap.blp или новая функция BlzChangeMinimapTerrainTex (только для 1.31+).
ответ
~8gabriel8:
Это пинг, но ты указал, что он через Alt, чего прежде не делал, потому и удивился. Ну вот всех врагов на карте выбираешь и пинг им ставишь)
ответ
Если у юнита есть способность рудника, то иконку не скрыть через РО. Есть функция альтернативной иконки на мини-карте. Она может быть только одна в карте. Импортируешь иконку с альфа-каналом (прозрачную):
SetAltMinimapIcon("war3mapImported\\InvisibleIcon.blp") -- .dds не видит
UnitSetUsesAltIcon(unit, true) -- принимает только созданного на карте юнита, не айди юнита из РО
-- всех юнитов можно перебрать через счетчик, например

Есть еще несколько баг репортов от игроков на форуме близзов о том, что этот параметр в РО не работает на версиях 1.32+:

23

» WarCraft 3 / Как создать невидимую способность?

Похожие вопросы:

ответ
способность никак
вместо способности должна быть покупка юнита
при покупке юнита смотрим владельца купленного юнита
это и будет игрок нажавший на иконку
после этого выбираем таверну и удаляем купленного юнита
ответ
Где-то я видел наработку с этими хр барами.
Найдётся в ресурсах пользователя JesusHipster.

23

» WarCraft 3 / Отследить ЛКМ

Похожие вопросы:

ответ
~8gabriel8:
Смотря что нужно, если ЛКМ нужно отслеживать только для выбора юнитов, указания цели способностей или установки точки сбора, то и стандартные функции 1.26 сгодятся, а если ещё и просто сам факт щёлкания в пустоту, то либо мемхак, либо новый патч.
как уже заметили выше

23

» WarCraft 3 / Таймер

Похожие вопросы:

ответ
Происходящее здесь напомнило мне один случай из моего далекого прошлого. В те времена я еще только начинал осваивать редактор. Одна из тем, которая меня заинтересовала и по которой мне не удалось найти достаточно полной информации - утечки. Тогда я пошел на один форум и задал простой вопрос о том, как определить наличие и степень серьезности утечек в карте, не перебирая весь код. В результате я получил тонну флуда и "ответ от профи", с которым все в итоге согласились - фрагмент кода с ценным указанием "если это число растет быстро - утечек много, если медленно - мало или нет вовсе". Код представлял из себя таймер с малым периодом, который создавал объект, брал его хендл, писал в чат и удалял объект, но был один нюанс - создаваемый объект утекал на каждой итерации таймера.
ответ
У тебя ошибка, фукнкцию которую ты хочешь вызвать должна находится выше места вызова.
Unholy_Shield_End должна быть описана выше чем Sosdanie_Shita_Act1

Ну и вовсе, тебе нужен не хендл ид юнита а таймера,ибо сохранять ты данные должен на таймер а не на юнита, когда таймер истечет и вызовет функцию, внутри этой функции у тебя будет работать функция GetExpiredTimer() - которая вернет тот таймер, который запустил эту функцию, это единственный обьект связывающий твой триггер и функцию Unholy_Shield_End, и разумеется GetTriggerUnit() - не будет работать в потоке таймера, т.к это функция реакция на событие триггера. Ты походу копипастишь код совершенно не вникая в принципы его работы.
ответ
Ну если у тебя через локалку что-то неправильно иногда работает, значит просто у тебя где-то ошибка (или ты вообще делаешь это не так).
Для того что бы работать парой таймер+юнит впринципе то больше ничего и не нужно - таймер и сам юнит. Но если у тебя должно запускаться параллельно несколько точно таких же таймеров, то тут может подойти массив таймеров (и массив юнитов). При срабатывании одного из таймеров ты можешь ссылаться на юнита записанного под тем же индексом массива ( unit[X] и timer[X] соответственно).
А ещё в триггер можно добавлять события на срабатывания новых таймеров.

23

» WarCraft 3 / Помощь в начале.

Похожие вопросы:

ответ
Это баг варика. Когда ты используешь несколько диалогов и показываешь их подряд, название Title надо каждый раз заново создавать. Если бы у тебя был один диалог и ты бы его показывал несколько раз подряд - заголовок сохраниться.
Могу посоветовать при пересоздании запускать триггер dialog повторно.
ответ
Постоянный харас хумана. Для начала проверить, есть ли у него экспанд. Если он собирается его основать - пытаться всячески сносить. Пытаться мешать крипингу (создавать скелетов жезлом, убивать побитых пехотинцев, ополчение коилом). Если хуману все же удалось построить экспанд, необходимо переходить в постоянную осаду, которая поддерживается с помощью пауков. Быстрый подъем до Т2 (Чертоги мертвых), после чего строится бойня и Лич, как второй герой (ДК - первый герой, кстати). При осаде стараться убить как можно больше пехотинцев. От экспанда лучше не отступать, так как хуман должен нести постоянные потери. При возможности убивать героя (но не сильно акцентировать на нем внимание; коил + нова, если герой хумана додыхает). Постоянно поттягивать статуи к экспанду и перебираться та Т3 (Темная Цитадель), после чего провести улучшения для сфинксов. Так как хуманы любят башни, необходимо статуи превратить в сфинксов и вынести ему башни (причем нужно каждого превратить отдельно и из следующей статуи вытащить всю ману; делать поочередно, не торопясь). Сплеш от ударов сфинксов снесет всех рабочих, которые попытаются реанимировать башни. После такого для хуманов игра завершается поражением. Главное все сделать правильно и последовательно.
ответ
Вот она... Я именно с неё начинал играть в Warcraft III.
ответ
Про выключение ручных сейвов ничего не могу сказать, а второй пункт решается созданием кастомного меню выхода через диалог, где ты сохраняешь игру через код. Только продолжать надо будет всё равно через загрузку игры.
ответ
мультиборд в карте на ГУИ? в гуи функциях внутри часто необнуляются локальные переменные объектов
если код то мб не используется MultiboardReleaseItem и итемы остаются висеть

23

» WarCraft 3 / Нужна помощь с триггером

Похожие вопросы:

ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
ответ
xgm.guru/p/wc3/articles Попробуй сделать что-нибудь сам. Посмотри, что вообще там можно сделать. Если ты просишь сделать за тебе двухстрочный триггер - забей.
ответ
должен сразу предупредить что делать за тебя никто не будет
теперь по твоим вопросам
  1. чтобы нельзя было кликать скрываешь, даёшь москиты, делаешь видимым
  2. действие проиграть звук и указываешь твою фразу
  3. выбираем всех подходящих(враги,живые) юнитов в радиусе от точки каста и создаём по дамми юниту(юнит без модели, без атаки, с москитами, с нужной способность, время жизни юнита 1 сек) для каждого подходящего юнита приказывая дамми юниту применить нужную способность в подходящего юнита
таким образом каждый дамми юнит применит нужную способность (в твоём случае корни) в 1 подходящего юнита для которого он и был создан а потом исчезнет
  1. система отлова урона
  2. морф юнита либо орбы
всё что я не описал есть в статьях
тебе нужны первые 2 раздела ("Основы" и "Триггеры и объекты")
ответ
Вот, должно работать. Если понадобится временное подчинение - таймер поможет.
ответ
Afterdeath, ну если поймаешь меня сегодня-завтра в Discord'е (discord.gg/Rze5sGP), то могу сделать в лучшем виде.

23

» WarCraft 3 / Блок атаки

Похожие вопросы:

ответ
Спеллы: Сделать цель на мгновение неуязвимой, чтоб получилась иллюзия уклонения.
Авто-атаки: А что не так со "Змеиной ловкостью"?
ответ
Инициация: Выбрать всех юнитов на карте: добавить в группу, добавить в триггер событие: "выбранный юнит получает урон".
Тригг1: Юнит входит в область карты, если юнит не в группе, добавить в группу и добавить в триггер событие: "входящий юнит получает урон".
Тригг2: (Событие получения урона) Установить здоровье triggering unit = здоровье triggering unit + (damage taken / 2(50%))
Спасибо за помощь.
ответ
на определение сзади ли юнит есть функция
function IsUnitBack takes unit uF, unit uWhichBack returns boolean
        real r1 = bj_RADTODEG * Atan2(GetUnitY(uWhichBack) - GetUnitY(uF), GetUnitX(uWhichBack) - GetUnitX(uF)) + 360.
        real r2 = GetUnitFacing(uWhichBack) + 360.
           if GetUnitY(uWhichBack) < GetUnitY(uF) then
               set r1 = r1 + 360.
           endif
        return (r1<=(r2+45.) and r1>=(r2-45.))
    endfunction
ответ
EvilPenguin, ну без мемхака никак, так что забиваем...